<?php
/**
 * 单例模式
 * User: Yan
 * Date: 2018/7/5
 * Time: 11:22
 */

namespace Yan;


class Singleton
{

    /**
     * @var Singleton
     * 静态方法只能调用静态属性，定义一个静态属性储存实例
     */
    protected static $instance;

    /**
     * 构造函数 单例模式中需要设置成私有
     */
    private function __construct()
    {
    }

    /**
     * 定义一个公有的静态方法 获取实例
     */
    public static function getInstance()
    {
        if ( !isset(self::$instance) ){
            self::$instance = new self;
        }
        return self::$instance;
    }

    public function test()
    {
        echo "测试函数";
    }
}
/*
$instance_1 = Singleton::getInstance();
var_dump($instance_1);
$instance_2 = Singleton::getInstance();
var_dump($instance_2);
*/
// 输出结果  object(Yan\Singleton)#1 (0) { } object(Yan\Singleton)#1 (0) { }
// #号后面的数字代表php内部类的序号，如果数字相同，则表示同一个类
